格式化 https://ww2.mathworks.cn/help/matlab/ref/format.html?searchHighlight=format&s_tid=srchtitle_support_results_1_format
format(style)
formate style
Style
结果
示例
short
短固定十进制小数点格式,小数点后包含 4 位数。这是默认数值设置。
3.1416
long
长固定十进制小数点格式,double
值的小数点后包含 15 位数,single
值的小数点后包含 7 位数。
3.141592653589793
shortE
短科学记数法,小数点后包含 4 位数。
3.1416e+00
longE
长科学记数法,double
值的小数点后包含 15 位数,single
值的小数点后包含 7 位数。
3.141592653589793e+00
shortG
短固定十进制小数点格式或科学记数法(取更紧凑的一个),总共 5 位。
3.1416
longG
长固定十进制小数点格式或科学记数法(取更紧凑的一个),对于 double
值,总共 15 位;对于 single
值,总共 7 位。
3.14159265358979
shortEng
短工程记数法,小数点后包含 4 位数,指数为 3 的倍数。
3.1416e+000
longEng
长工程记数法,包含 15 位有效位数,指数为 3 的倍数。
3.14159265358979e+000
+
正/负格式,对正、负和零元素分别显示 +
、-
和空白字符。
+
bank
货币格式,小数点后包含 2 位数。
3.14
hex
二进制双精度数字的十六进制表示形式。
400921fb54442d18
rational
小整数的比率。
355/113
Style
结果
示例
compact
隐藏过多的空白行以便在一个屏幕上显示更多输出。
theta = pi/2 theta = 1.5708
loose
添加空白行以使输出更易于阅读。这是行距的默认设置。
theta = pi/2 theta = 1.5708
矩阵 索引和元素编辑
位置索引 线性索引
逻辑值索引
删除元素 1 2 3 4 5 A = [] A(2 ,2 )=[] % A null assignment can have only one non-colon index.
创建
合并
网格
size & shape
reshape()
>> reshape(A,2,3)
ans =
1 3 5
2 4 6
>> reshape(A,[2],3)
ans =
1 3 5
2 4 6
重排
数据类型 数值
double()
>> a = double(10.00)
显示转换
class()
>> class(a)
ans =
'double'
>> class(ones(3))
ans =
'double'
cast()
B = cast(A,newclass)
B = cast(A,"like",p)
复数
Inf
,NaN
字符 字符串 创建、引用结构体 Student.name = 'wangx';
Student.sex = 'Male';
Student.height = '170';
Student(2).name = 'zhangsan';
Student(2).sex = 'Male';
Student(2).height = 172;
field1 = 'f1'; value1 = zeros(1,10);
field2 = 'f2'; value2 = {'a', 'b'};
field3 = 'f3'; value3 = {pi, pi.^2};
field4 = 'f4'; value4 = {'fourth'};
s = struct(field1,value1,field2,value2,field3,value3,field4,value4)
创建元胞 c = {42,rand(5),"abcd"}
c =
1×3 cell array
{[42]} {5×5 double} {["abcd"]}
C = {1,2,3;
'text',rand(5,10,2),{11; 22; 33}}
C=_2×3 cell array_
{[ 1]} {[ 2]} {[ 3]}
{'text'} {5x10x2 double} {3x1 cell}
C = cell(n)
C = cell(sz1,...,szN)
C = cell(sz)
D = cell(obj)
例如,假设有一个包含混合数据的 2×3 元胞数组。
C = {'one','two','three';
100,200,rand(3,3)}
C=_2×3 cell array_
{'one'} {'two'} {'three' }
{[100]} {[200]} {3x3 double}
每个元素都包含在一个元胞内。如果使用标准圆括号对该数组进行索引,得到的结果是一个包含元胞的元胞数组子集。
C2 = C(1:2,1:2)
C2=_2×2 cell array_
{'one'} {'two'}
{[100]} {[200]}
要向特定元胞读取或写入内容,请用花括号将索引括起来。
R = C{2,3}
R = _3×3_
0.8147 0.9134 0.2785
0.9058 0.6324 0.5469
0.1270 0.0975 0.9575
函数 函数声明 function [y1,...,yN] = myfun(x1,...,xM)
%code
end
function [y1,...,yN] = myfun(x1,...,xM)
声明名为 myfun
的函数,该函数接受输入 x1,...,xM
并返回输出 y1,...,yN
。此声明语句必须是函数的第一个可执行代码行。有效的函数名称以字母字符开头,并且可以包含字母、数字或下划线。
运算和数学 运算符 算数运算 加法
减法
乘法
除法
./
数组右除
.\
数组左除
/
求解关于 x 的线性方程组 xA = B
\
求解关于 x 的线性方程组 Ax = B
幂
转置
模除法和舍入
关系运算
==
确定相等性
>=
决定大于或等于
>
确定大于
<=
确定小于等于
<
确定小于
~=
确定不相等性
逻辑运算
集合运算
rand()
X = rand
返回从区间 (0,1) 的均匀分布中得到的随机标量。X = rand(n)
返回一个由均匀分布的随机数组成的 n
×n
矩阵。X = rand([sz1,...,szN])
返回由随机数组成的 sz1
×…×szN
数组,其中 sz1,...,szN
指示每个维度的大小。例如:rand(3,4)
返回一个 3×4 的矩阵。
X = rand
X = rand(n)
X = rand(sz1,...,szN)
randi()
X = randi([imax])
返回一个介于 1
和 imax
之间的伪随机整数标量。
X = randi(imax)
X = randi(imax,n)
X = randi(imax,sz1,...,szN)
X = randi([imin,imax],___)
流程控制
if
, elseif
, else
if `expression`
`statements`
elseif `expression`
`statements`
else
`statements`
end
switch
switch `switch_expression`
case `case_expression`
`statements`
case `case_expression`
`statements`
...
otherwise
`statements`
end
for
for v = 1.0:-0.2:0.0
disp(v)
end
for v = [1 5 8 17]
disp(v)
end
try
, catch
try
`statements`
catch `exception`
`statements`
end
pause(n)
代数 多项式 MATLAB® 将多项式表示为行向量,其中包含按降幂排序的系数。
%p(x)=x2−4x+4。
p = [1 -4 4];
%p(x)=4x5−3x2+2x+33。
p = [4 0 0 -3 2 33];
符号运算 Symbolic Math Toolbox
符号创建
sym()
, syms
符号变量
% 创建符号
a1Sym = sym(1/3)
a2Sym = sym(pi)
bSym = sin(sym(pi))
sym('1234567 + 1i')
y = sym('y')
syms x
syms a b c
A = sym('a',[1 10])
%符号表达式
phi = (1 + sqrt(sym(5)))/2;
f = phi^2 - phi - 1
syms a b c x
f = a*x^2 + b*x + c
%等式
eqn = (x^2 + y^2)^4 == (x^2 - y^2)^2;
syms
符号函数
syms f(x,y)
f(x,y) = x^2*y
f(x, y) =
x^2*y
%Find the value of `f` at `(3,2)`.
f(3,2)
ans =
18
%Symbolic functions accept array inputs.
xVal = 1:5;
yVal = 3:7;
f(xVal,yVal)
ans =
[ 3, 16, 45, 96, 175]
%从隐函数生成
y1 = @(a,b) cos(a) + cos(b);
ys1 = sym(y1);
运算 多项式
collect(f)
factor(f)
syms x
g = x^3 + 6*x^2 + 11*x + 6;
factor(g)
ans =
[ x + 3, x + 2, x + 1]
expand(f)
simplify(f)
subs(f,[x,y,z],[a,b,c])
coeffs()
syms x y
cx = coeffs(x^3 + 2*x^2*y + 3*x*y^2 + 4*y^3, x)
cy = coeffs(x^3 + 2*x^2*y + 3*x*y^2 + 4*y^3, y)
cx =
[ 4*y^3, 3*y^2, 2*y, 1]
cy =
[ x^3, 2*x^2, 3*x, 4]
coeffs(f,x)
sym2poly(f)
poly2sym(pl,x)
[N,D] = numden(A)
finverse(f)
compose(f,g)
微积分
diff(f,x,y)
int(f,x,[0,1])
limit(f,x,0,"left")
`taylor(f,x,0,’Order’,10)
symsum(f,k,[0,Inf])
求解
solve()
syms x
solve(x^3 - 6*x^2 == 6 - 11*x)
solve(x^3 - 6*x^2 + 11*x - 6)
%If you do not specify any variable, you get the solution of an equation for the alphabetically closest to `x` variable.
syms x y
solve(6*x^2 - 6*x^2*y + x*y^2 - x*y + y^3 - y^2 == 0, y)
ans =
1
2*x
-3*x
syms x y z
[x, y, z] = solve(z == 4*x, x == y, z == x^2 + y^2)
dsolve(ode,[cond])
syms y(x)
Dy = diff(y);
ode = diff(y,x,2) == cos(2*x)-y;
cond1 = y(0) == 1;
cond2 = Dy(0) == 0;
%Solve `ode` for `y`. Simplify the solution using the `simplify` function.
conds = [cond1 cond2];
ySol(x) = dsolve(ode,conds);
ySol = simplify(ySol)
ySol(x) =
1 - (8*sin(x/2)^4)/3
绘图
fplot()
, fplot3()
, fpolarplot()
syms x
f = x^3 - 6*x^2 + 11*x - 6;
fplot(f)
%参数方程
syms t
fplot3(t^2*sin(10*t), t^2*cos(10*t), t)
fimplicit()
%设定界限
syms x y
eqn = (x^2 + y^2)^4 == (x^2 - y^2)^2;
fimplicit(eqn, [-1, 1])
绘图 网格
meshgrid()
[X,Y] = meshgrid(x,y)
[X,Y] = meshgrid(x)
[X,Y,Z] = meshgrid(x,y,z)
[X,Y,Z] = meshgrid(x)
%使用均匀间隔的 _x_ 坐标和 _y_ 坐标在区间 [-2,2] 内创建二维网格。
x = -2:0.25:2;
y = x;
[X,Y] = meshgrid(x);
在二维网格上计算并绘制函数 f(x,y)=xe−x2−y2。
Get
F = X.*exp(-X.^2-Y.^2); surf(X,Y,F)
get(h,propName)
, set(h,propName,Value)
ubplot(m,n,p) subplot(m,n,p,’replace’) subplot(m,n,p,’align’) ax = subplot(___) subplot(ax) %eg1
subplot(2,2,1);
x = linspace(-3.8,3.8);
y_cos = cos(x);
plot(x,y_cos);
title('Subplot 1: Cosine')
subplot(2,2,2);
y_poly = 1 - x.^2./2 + x.^4./24;
plot(x,y_poly,'g');
title('Subplot 2: Polynomial')
subplot(2,2,[3,4]);
plot(x,y_cos,'b',x,y_poly,'g');
title('Subplot 3 and 4: Both')
绘图类型 线图
plot()
, plot3()
plot(X,Y)
plot(X,Y,LineSpec)
plot(X1,Y1,...,Xn,Yn)
plot(X1,Y1,LineSpec1,...,Xn,Yn,LineSpecn)
plot(Y)
plot(Y,LineSpec)
% 指定属性
figure
plot(x,y,'--gs',...
'LineWidth',2,...
'MarkerSize',10,...
'MarkerEdgeColor','b',...
'MarkerFaceColor',[0.5,0.5,0.5])
Area 属性
Line 属性
p = plot(x,y1,x,y2);
p(1).LineWidth = 2;
p(2).Marker = '*';
title
title(titletext)
title(titletext,subtitletext)
title(___,Name,Value)
title(ax1,'Top Plot')
title(ax2,'Bottom Plot')
t = title(___)
t.Color = 'red';
xlabel
, ylabel
xlabel(txt)
xlabel(target,txt)
xlabel(___,Name,Value)
t = xlabel(___)
xlim
, ylim
xlim(limits)
xlim(limitmethod)
xlim(limitmode)
xl = xlim
limmethod = xlim("method")
limmode = xlim("mode")
___ = xlim(target,___)
%eg1
xlim([0 5])
xlim([0 inf])
xlim tight
xlim auto
%eg2
xl = xlim
xl = _1×2_
-3 4
legend
legend
legend(label1,...,labelN)
legend(labels)
legend(subset,___)
legend(target,___)
legend(___,Name,Value)
legend(vsbl)
legend('off')
lgd = legend(___)
%eg1
x = linspace(0,pi);
y1 = cos(x);
plot(x,y1)
hold on
y2 = cos(2*x);
plot(x,y2)
legend('cos(x)','cos(2x)')
y3 = cos(3*x);
plot(x,y3,'DisplayName','cos(3x)')
%eg2
tiledlayout(2,1)
y1 = rand(3);
ax1 = nexttile;
plot(y1)
y2 = rand(5);
ax2 = nexttile;
plot(y2)
legend(ax1,{'Line 1','Line 2','Line 3'})
hold on
, hold off
axis equal
grid on
, grid off
yyaxis
yyaxis left
yyaxis right
yyaxis(ax,___)
%eg1
load('accidents.mat','hwydata')
ind = 1:51;
drivers = hwydata(:,5);
pop = hwydata(:,7);
yyaxis left
scatter(ind,drivers)
title('Highway Data')
xlabel('States')
ylabel('Licensed Drivers (thousands)')
yyaxis right
scatter(ind,pop)
ylabel('Vehicle Miles Traveled (millions)')
text
x = linspace(-5,5);
y = x.^3-12*x;
plot(x,y)
xt = [-2 2];
yt = [16 -16];
str = {'local max','local min'};
text(xt,yt,str)
colormap
colormap map
colormap(map)
colormap(target,map)
cmap = colormap(___)
cmap = colormap
cmap = colormap(target)
loglog
, semilogx
, semilogy
scatter()
polarplot()
fplot
, fimplicit
, fplot3
area
数据分布图
等高线图
向量场图
quiver
quiver(X,Y,U,V)
quiver(U,V)
曲面图
surf()
, mesh()
动画
movie
, getframe
, drawnow
movie(M)
movie(M,n)
movie(M,n,fps)
%g1
h = figure;
Z = peaks;
surf(Z)
loops = 40;
M(loops) = struct('cdata',[],'colormap',[]);
h.Visible = 'off';
for j = 1:loops
X = sin(j*pi/10)*Z;
surf(X,Z)
drawnow
M(j) = getframe;
end
h.Visible = 'on';
movie(M);
图像输出
show
GUI
数据导入
readtable
T = readtable("patients.xls");
T(1:5,1:5)
ans =
5×5 table
LastName Gender Age Location Height
____________ __________ ___ _____________________________ ______
{'Smith' } {'Male' } 38 {'County General Hospital' } 71
{'Johnson' } {'Male' } 43 {'VA Hospital' } 69
{'Williams'} {'Female'} 38 {'St. Mary's Medical Center'} 64
{'Jones' } {'Female'} 40 {'VA Hospital' } 67
{'Brown' } {'Female'} 49 {'County General Hospital' } 64
readmatrix
M = readmatrix("basic_matrix.xls")
M = 5×4
6 8 3 1
5 4 7 3
1 6 7 10
4 2 8 2
2 7 5 9
readcell
C = readcell("basic_cell.xls")
C = 3×3 cell array
{[ 1]} {[ 2]} {[ 3]}
{'hello' } {'world'} {[ NaN]}
{[10-Oct-2018 10:27:56]} {[ 1]} {1x1 missing}
???